package com.freesky.common.annotation;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.freesky.common.jackson.DesensitizedJsonSerializer;

import java.lang.annotation.*;

/**
 * 数据脱敏注解
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JacksonAnnotationsInside
@JsonSerialize(using = DesensitizedJsonSerializer.class)
public @interface Desensitized {
    
    /**
     * 脱敏类型
     */
    DesensitizedType type();
    
    /**
     * 脱敏数据类型枚举类
     */
    enum DesensitizedType {
        /**
         * 手机号
         */
        PHONE,
        
        /**
         * 用户名
         */
        USER_NAME,
        
        /**
         * 邮箱
         */
        EMAIL,
        
        /**
         * 身份证号
         */
        ID_CARD,
        
        /**
         * 银行卡号
         */
        BANK_CARD,
        
        /**
         * 地址
         */
        ADDRESS
    }
} 